package leetcode.editor.cn;

/**
 * [520]检测大写字母
 * detect-capital
 */
//我们定义，在以下情况时，单词的大写用法是正确的：
// 全部字母都是大写，比如 "USA" 。 
// 单词中所有字母都不是大写，比如 "leetcode" 。 
// 如果单词不只含有一个字母，只有首字母大写， 比如 "Google" 。
//
// 给你一个字符串 word 。如果大写用法正确，返回 true ；否则，返回 false 。
// 示例 1：
//输入：word = "USA"
//输出：true
//
// 示例 2：
//输入：word = "FlaG"
//输出：false
//
// 提示：
// 1 <= word.length <= 100 
// word 由小写和大写英文字母组成 
// 
// Related Topics 字符串 👍 179 👎 0

public class LC520_检测大写字母 {
    public static void main(String[] args) {
        Solution solution = new LC520_检测大写字母().new Solution();
        boolean result = solution.detectCapitalUse("FlaG");
        System.out.println("result = " + result);
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public boolean detectCapitalUse(String word) {
            int length = word.length();
            //只有一个字母时返回true
            if (length == 1) {
                return true;
            }
            //首字母小写，必须全部小写
            if (Character.isLowerCase(word.charAt(0))) {
                for (int i = 1; i < length; i++) {
                    if (Character.isUpperCase(word.charAt(i))) {
                        return false;
                    }
                }
                return true;
            }
            //前两个字母都是大写，则后面必须都是大写
            if (Character.isUpperCase(word.charAt(0)) && Character.isUpperCase(word.charAt(1))) {
                for (int i = 2; i < length; i++) {
                    if (Character.isLowerCase(word.charAt(i))) {
                        return false;
                    }
                }
                return true;
            }
            //前两个字母第一个大写第二个小写，则后面必须都是小写
            if (Character.isUpperCase(word.charAt(0)) && Character.isLowerCase(word.charAt(1))) {
                for (int i = 2; i < length; i++) {
                    if (Character.isUpperCase(word.charAt(i))) {
                        return false;
                    }
                }
                return true;
            }
            //不满足上述情况的返回false
            return false;
        }
    }
    //leetcode submit region end(Prohibit modification and deletion)

}